不可以尋址,指的是不能通過&獲得其地址。
golang中不能尋址的可以總結為:不可變的,臨時結果和不安全的。只要符合其中任何一個條件,它就是不可以尋址的。
具體為:
package main type Named interface { // Name 用于獲取名字。 Name() string } type Dog struct { name string } func (dog *Dog) SetName(name string) { dog.name = name } func (dog Dog) Name() string { return dog.name } func main() { // 示例1。 const num = 123 //_ = &num // 常量不可尋址。 //_ = &(123) // 基本類型值的字面量不可尋址。 var str = "abc" _ = str //_ = &(str[0]) // 對字符串變量的索引結果值不可尋址。 //_ = &(str[0:2]) // 對字符串變量的切片結果值不可尋址。 str2 := str[0] _ = &str2 // 但這樣的尋址就是合法的。 //_ = &(123 + 456) // 算術操作的結果值不可尋址。 num2 := 456 _ = num2 //_ = &(num + num2) // 算術操作的結果值不可尋址。 //_ = &([3]int{1, 2, 3}[0]) // 對數組字面量的索引結果值不可尋址。 //_ = &([3]int{1, 2, 3}[0:2]) // 對數組字面量的切片結果值不可尋址。 _ = &([]int{1, 2, 3}[0]) // 對切片字面量的索引結果值卻是可尋址的。 //_ = &([]int{1, 2, 3}[0:2]) // 對切片字面量的切片結果值不可尋址。 //_ = &(map[int]string{1: "a"}[0]) // 對字典字面量的索引結果值不可尋址。 var map1 = map[int]string{1: "a", 2: "b", 3: "c"} _ = map1 //_ = &(map1[2]) // 對字典變量的索引結果值不可尋址。 //_ = &(func(x, y int) int { // return x + y //}) // 字面量代表的函數不可尋址。 //_ = &(fmt.Sprintf) // 標識符代表的函數不可尋址。 //_ = &(fmt.Sprintln("abc")) // 對函數的調用結果值不可尋址。 dog := Dog{"little pig"} _ = dog //_ = &(dog.Name) // 標識符代表的函數不可尋址。 //_ = &(dog.Name()) // 對方法的調用結果值不可尋址。 //_ = &(Dog{"little pig"}.name) // 結構體字面量的字段不可尋址。 //_ = &(interface{}(dog)) // 類型轉換表達式的結果值不可尋址。 dogI := interface{}(dog) _ = dogI //_ = &(dogI.(Named)) // 類型斷言表達式的結果值不可尋址。 named := dogI.(Named) _ = named //_ = &(named.(Dog)) // 類型斷言表達式的結果值不可尋址。 var chan1 = make(chan int, 1) chan1 <- 1 //_ = &(<-chan1) // 接收表達式的結果值不可尋址。 }
以上就是Golang中哪些值是不可以尋址的的詳細內容,更多請關注創新互聯其它相關文章!
新聞名稱:go語言中不可以尋址的值有哪些-創新互聯
網站路徑:http://vcdvsql.cn/article0/csscoo.html
成都網站建設公司_創新互聯,為您提供App設計、網站導航、企業網站制作、外貿網站建設、網頁設計公司、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯