第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么kubernetes內(nèi)部使用字符串指針而不是字符串?

為什么kubernetes內(nèi)部使用字符串指針而不是字符串?

Go
富國(guó)滬深 2023-06-12 09:24:54
不僅是字符串指針,還有bool指針、int指針等。請(qǐng)參閱: https: //github.com/kubernetes/cli-runtime/blob/5c4694c3aa38d6f710b2e3b18598f9d83f1aae3b/pkg/genericcloptions/config_flags.go#L322-L336似乎 golang 無(wú)法從 Constant Pool 之類(lèi)的東西中獲益。戈朗package mainimport (    "fmt")func StringPtr(s string) *string {    return &s}func main() {    fmt.Println(StringPtr("")) // outputs "0x40e128"    fmt.Println(StringPtr("")) // outputs "0x40e138"}Pythonid("") // outputs "4459080368"id("") // outputs "4459080368"
查看完整描述

4 回答

?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊

我的猜測(cè)是這樣做是為了確保配置標(biāo)志的值在更改時(shí)隨處更新。


這個(gè)例子可能有幫助


package main


import "fmt"


func stringPointer(s string) *string {

    return &s

}


type Config struct {

    String  string

    Pointer *string

}


func NewConfig() Config {

    return Config{

        String:  "default",

        Pointer: stringPointer("default"),

    }

}


var (

    config = NewConfig()


    String  = config.String

    Pointer = config.Pointer

)


func PrintVars() {

    fmt.Printf("config.String: %v\n", config.String)

    fmt.Printf("config.Pointer: %v\n", *config.Pointer)

    fmt.Printf("String: %v\n", String)

    fmt.Printf("Pointer: %v\n", *Pointer)

    fmt.Println("-------------------------")

}


func main() {

    PrintVars()

    config.String = "new value"

    *config.Pointer = "new value"

    PrintVars()

    String = "even newer value"

    *Pointer = "even newer value"

    PrintVars()

}

出去:


config.String: default

config.Pointer: default

String: default

Pointer: default

-------------------------

config.String: new value

config.Pointer: new value

String: default

Pointer: new value

-------------------------

config.String: new value

config.Pointer: even newer value

String: even newer value

Pointer: even newer value

-------------------------


查看完整回答
反對(duì) 回復(fù) 2023-06-12
?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊

通常,在配置中使用 int 指針而不是 int 的目的(如 kubernetes spec)是為了區(qū)分顯式零和未指定,與 string 或 bool 相同。


查看完整回答
反對(duì) 回復(fù) 2023-06-12
?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊

屬性指針為屬性提供另一個(gè)值:

type config struct {
   PtrValue *string
   Value    string
   }

指向基本類(lèi)型變量的指針?lè)浅_m合空字符串("")與值具有不同含義的情況nil。

例如,命令行程序的輸入?yún)?shù)不能保證用戶提供了這樣的輸入。指針值是區(qū)分無(wú)輸入和零值輸入的理想方式。


查看完整回答
反對(duì) 回復(fù) 2023-06-12
?
慕桂英3389331

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊

要存儲(chǔ)一個(gè)字符串,您需要 2 個(gè)字的計(jì)算機(jī)內(nèi)存。其中一個(gè)指向字符串的開(kāi)頭,另一個(gè)包含長(zhǎng)度。

字符串指針只有一半大小,因?yàn)樗皇且粋€(gè)指針,沒(méi)有長(zhǎng)度。這樣可以節(jié)省內(nèi)存。

當(dāng)您有 100 個(gè)指向同一個(gè)字符串的指針時(shí),這種差異就會(huì)變得很明顯。然后你有 100 + 2 個(gè)單詞加上實(shí)際的字節(jié)數(shù)組。這當(dāng)然取決于是否newstring實(shí)習(xí)字符串。

使用字符串指針而不是字符串還有另一個(gè)用例。然后程序可以區(qū)分空字符串和根本沒(méi)有字符串。特別是在配置部分,這很有用。超時(shí)為 0 秒與根本沒(méi)有超時(shí)是不同的。對(duì)于大多數(shù)其他配置選項(xiàng),空字符串無(wú)論如何都沒(méi)有意義,所以這只是開(kāi)銷(xiāo)。盡管如此,它仍以這種方式構(gòu)建,以便每個(gè)配置選項(xiàng)都具有相同的結(jié)構(gòu)。當(dāng)您需要理解代碼時(shí),這種一致性會(huì)有所幫助。

也可能有其他原因。也許有一些關(guān)于這個(gè)主題的項(xiàng)目文檔。


查看完整回答
反對(duì) 回復(fù) 2023-06-12
  • 4 回答
  • 0 關(guān)注
  • 214 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)