不可以尋址,指的是不能通過&獲得其地址。
目前創(chuàng)新互聯(lián)已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、張掖網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。golang中不能尋址的可以總結(jié)為:不可變的,臨時結(jié)果和不安全的。只要符合其中任何一個條件,它就是不可以尋址的。
具體為:
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]) // 對字符串變量的索引結(jié)果值不可尋址。 //_ = &(str[0:2]) // 對字符串變量的切片結(jié)果值不可尋址。 str2 := str[0] _ = &str2 // 但這樣的尋址就是合法的。 //_ = &(123 + 456) // 算術(shù)操作的結(jié)果值不可尋址。 num2 := 456 _ = num2 //_ = &(num + num2) // 算術(shù)操作的結(jié)果值不可尋址。 //_ = &([3]int{1, 2, 3}[0]) // 對數(shù)組字面量的索引結(jié)果值不可尋址。 //_ = &([3]int{1, 2, 3}[0:2]) // 對數(shù)組字面量的切片結(jié)果值不可尋址。 _ = &([]int{1, 2, 3}[0]) // 對切片字面量的索引結(jié)果值卻是可尋址的。 //_ = &([]int{1, 2, 3}[0:2]) // 對切片字面量的切片結(jié)果值不可尋址。 //_ = &(map[int]string{1: "a"}[0]) // 對字典字面量的索引結(jié)果值不可尋址。 var map1 = map[int]string{1: "a", 2: "b", 3: "c"} _ = map1 //_ = &(map1[2]) // 對字典變量的索引結(jié)果值不可尋址。 //_ = &(func(x, y int) int { // return x + y //}) // 字面量代表的函數(shù)不可尋址。 //_ = &(fmt.Sprintf) // 標(biāo)識符代表的函數(shù)不可尋址。 //_ = &(fmt.Sprintln("abc")) // 對函數(shù)的調(diào)用結(jié)果值不可尋址。 dog := Dog{"little pig"} _ = dog //_ = &(dog.Name) // 標(biāo)識符代表的函數(shù)不可尋址。 //_ = &(dog.Name()) // 對方法的調(diào)用結(jié)果值不可尋址。 //_ = &(Dog{"little pig"}.name) // 結(jié)構(gòu)體字面量的字段不可尋址。 //_ = &(interface{}(dog)) // 類型轉(zhuǎn)換表達(dá)式的結(jié)果值不可尋址。 dogI := interface{}(dog) _ = dogI //_ = &(dogI.(Named)) // 類型斷言表達(dá)式的結(jié)果值不可尋址。 named := dogI.(Named) _ = named //_ = &(named.(Dog)) // 類型斷言表達(dá)式的結(jié)果值不可尋址。 var chan1 = make(chan int, 1) chan1 <- 1 //_ = &(<-chan1) // 接收表達(dá)式的結(jié)果值不可尋址。 }
以上就是Golang中哪些值是不可以尋址的的詳細(xì)內(nèi)容,更多請關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!