亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

分配一個字符串類型 golang

分配一個字符串類型 golang

Go
一只斗牛犬 2021-12-07 18:47:48
我很難將字符串分配給類型字符串。所以我有這種類型:type Username string然后我有一個返回字符串的函數我想要做的是將用戶名設置為返回的字符串:u := &Username{returnedString}我也試過var u Username u = returnedString但我總是得到一個錯誤。
查看完整描述

2 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

正如其他人指出的那樣,您需要進行顯式類型轉換:


someString := funcThatReturnsString()

u := Username(someString)

我建議閱讀這篇關于隱式類型轉換的文章。具體來說,Honnef 參考了 Go 對可分配性的規范:


在以下任一情況下,值 x 可分配給 T 類型的變量(“x 可分配給 T”):


x 的類型 V 和 T 具有相同的基礎類型,并且 V 或 T 中至少有一個不是命名類型。

所以在你的例子中,returnedString已經是一個“命名類型”:它有類型string.如果你做了類似的事情


var u Username

u = "some string"

你就OK了,因為"some string"會被隱式轉換成類型Username兩者string并Username具有潛在的類型string。


查看完整回答
反對 回復 2021-12-07
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

您已經創建了一個用戶定義的類型“用戶名”。您不能在不進行轉換的情況下將一種類型的值分配給另一種類型(在本例中為用戶名的字符串)。順便說一句,您可以為它分配一個字符串文字。


var u Username

u = "test"

將工作。


var u Username

    var s string


    s = "test"

    u = s

會給你錯誤:


不能在賦值中使用 s(類型字符串)作為用戶名類型


您可以從一種類型轉換為另一種類型,因此...:


var u Username

    var s string

    s = "test"

    u = Username(s)

......也會起作用。“u”將是用戶名類型,值為“test”。


為了記錄,這些并不是慣用的例子。我只是想清楚地說明這里的類型發生了什么。


查看完整回答
反對 回復 2021-12-07
  • 2 回答
  • 0 關注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號