不可以尋址,指的是不能通過(guò)&獲得其地址。
創(chuàng)新互聯(lián)建站是一家專(zhuān)業(yè)提供海城企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為海城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
golang中不能尋址的可以總結(jié)為:不可變的,臨時(shí)結(jié)果和不安全的。只要符合其中任何一個(gè)條件,它就是不可以尋址的。
具體為:
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) // 基本類(lèi)型值的字面量不可尋址。 var str = "abc" _ = str //_ = &(str[0]) // 對(duì)字符串變量的索引結(jié)果值不可尋址。 //_ = &(str[0:2]) // 對(duì)字符串變量的切片結(jié)果值不可尋址。 str2 := str[0] _ = &str2 // 但這樣的尋址就是合法的。 //_ = &(123 + 456) // 算術(shù)操作的結(jié)果值不可尋址。 num2 := 456 _ = num2 //_ = &(num + num2) // 算術(shù)操作的結(jié)果值不可尋址。 //_ = &([3]int{1, 2, 3}[0]) // 對(duì)數(shù)組字面量的索引結(jié)果值不可尋址。 //_ = &([3]int{1, 2, 3}[0:2]) // 對(duì)數(shù)組字面量的切片結(jié)果值不可尋址。 _ = &([]int{1, 2, 3}[0]) // 對(duì)切片字面量的索引結(jié)果值卻是可尋址的。 //_ = &([]int{1, 2, 3}[0:2]) // 對(duì)切片字面量的切片結(jié)果值不可尋址。 //_ = &(map[int]string{1: "a"}[0]) // 對(duì)字典字面量的索引結(jié)果值不可尋址。 var map1 = map[int]string{1: "a", 2: "b", 3: "c"} _ = map1 //_ = &(map1[2]) // 對(duì)字典變量的索引結(jié)果值不可尋址。 //_ = &(func(x, y int) int { // return x + y //}) // 字面量代表的函數(shù)不可尋址。 //_ = &(fmt.Sprintf) // 標(biāo)識(shí)符代表的函數(shù)不可尋址。 //_ = &(fmt.Sprintln("abc")) // 對(duì)函數(shù)的調(diào)用結(jié)果值不可尋址。 dog := Dog{"little pig"} _ = dog //_ = &(dog.Name) // 標(biāo)識(shí)符代表的函數(shù)不可尋址。 //_ = &(dog.Name()) // 對(duì)方法的調(diào)用結(jié)果值不可尋址。 //_ = &(Dog{"little pig"}.name) // 結(jié)構(gòu)體字面量的字段不可尋址。 //_ = &(interface{}(dog)) // 類(lèi)型轉(zhuǎn)換表達(dá)式的結(jié)果值不可尋址。 dogI := interface{}(dog) _ = dogI //_ = &(dogI.(Named)) // 類(lèi)型斷言表達(dá)式的結(jié)果值不可尋址。 named := dogI.(Named) _ = named //_ = &(named.(Dog)) // 類(lèi)型斷言表達(dá)式的結(jié)果值不可尋址。 var chan1 = make(chan int, 1) chan1 <- 1 //_ = &(<-chan1) // 接收表達(dá)式的結(jié)果值不可尋址。 }
以上就是Golang中哪些值是不可以尋址的的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!