溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

go語言中不可以尋址的值有哪些

發(fā)布時(shí)間:2020-06-16 14:28:20 來源:億速云 閱讀:353 作者:鴿子 欄目:編程語言

不可以尋址,指的是不能通過&獲得其地址。 

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) // 基本類型值的字面量不可尋址。    
	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)注億速云其它相關(guān)文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI