タグ付けされた質問 「go」

Goはオープンソースのプログラミング言語です。それは静的に型付けされており、Cから緩やかに派生した構文で、自動メモリ管理、タイプセーフティ、いくつかの動的型付け機能、可変長配列(スライスと呼ばれる)やキー値マップなどの追加の組み込み型、および大規模な標準ライブラリ。



2
2つのマップの結合を実行する
ファイルパスを表すオブジェクトを作成する再帰関数があります(キーはパスであり、値はファイルに関する情報です)。ファイルの処理のみを目的としているため再帰的であるため、ディレクトリが検出されると、そのディレクトリで関数が再帰的に呼び出されます。 そうは言っても、2つのマップ(つまり、再帰呼び出しの値で更新された「メイン」マップ)で集合和集合に相当するものを実行したいと思います。1つのマップを繰り返し処理し、各キーとその値を他のマップの同じものに割り当てる以外に、これを行う慣用的な方法はありますか? つまり、givena,bはタイプmap [string] *SomeObjectでありa、b最終的には入力さaれますが、b?のすべての値で更新する方法はありますか?
81 map  go  union 

4
GoのNULL値
Goで「null」値をどのように表現しますか? type Node struct { next *Node data interface{} } そして言いたい return &Node{ data: NULL, next: NULL }
80 go 

1
GOPRIVATE環境変数を設定する方法
私はGoプロジェクトに取り組み始めました、そしてそれはGithubプライベートリポジトリからのいくつかのプライベートモジュールを使用します、そしてそれを実行しようとするといつでもgo run main.go私に以下の410 Goneエラーを与えます: github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod:github.com/repoURL/go-proto@v2.86.0+incompatible/go.modの確認:https://sum.golangの読み取り。 org / lookup / github.com / !repoURL/go-proto@v2.86.0+incompatible:410 Gone ターミナルからプライベートリポジトリを簡単に複製できsshます。つまり、キーが正しく構成されています。環境変数を設定する必要があることをここで読みましたが、そのGOPRIVATE方法がわかりません。 誰かが関連するチュートリアルに答えたり指摘したりできますか? Go: v1.13、OS: macOS Mojave

1
sync.Onceのコンテキストで「ホットパス」とはどういう意味ですか?
go version:1.13.4ソースコードsync / once.goで、次のコメントは「ホットパス」について言及しています: type Once struct { // done indicates whether the action has been performed. // It is first in the struct because it is used in the hot path. // The hot path is inlined at every call site. // Placing done first allows more compact instructions …
14 go 

3
GOPATHベースのdepからgo modに移行するときに、最初のパス要素に不正なモジュールパス「xxxx / xxxx / uuid」のドットがない
$ goバージョン 1.13.3 次のようなフォルダ構造があります。 GOPATH +---src +--- my-api-server +--- my-auth-server +--- main.go +--- my-utils +--- uuid +--- uuid.go my-auth-servermy-api-server/my-utils/uuid依存として使用 さて、GOPATHベースのモジュールシステムを使用すると、これは正常に機能しました。しかし、goモジュールを使用しているときに、実行go run main.goするmy-auth-serverとエラーが返されました。 build command-line-arguments: cannot load my-api-server/my-utils/uuid: malformed module path "my-api-server/my-utils/uuid": missing dot in first path element これを解決する方法はありますか?
12 go  go-modules 

1
goモジュールファイル(go.mod)内で「go」バージョンディレクティブを使用するとどのような影響がありますか
次のgo.modファイルがあるとします。 module foo go 1.12 require ( github.com/bar/baz v1.0.0 github.com/rat/cat v1.0.0 ) 何をgo 1.12示していますか?foo他のバージョンのGoに対してモジュールをコンパイルするのを防ぎますか?それとも単にfooの推奨/必須Goバージョンのインジケータですか?これは、goの新しいバージョンがリリースされたとき(6か月ごと)に更新する必要があるディレクティブですか?
11 go  go-modules 

1
client-goを使用して、単一のYAMLファイル内の複数のタイプでKubernetes APIに対して直接「kubectl apply」を実行する
私はhttps://github.com/kubernetes/client-goを使用しており、すべて正常に動作します。 公式のKubernetesダッシュボードのマニフェスト(YAML)があります:https : //raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml kubectl applyclient-goを使用して、Goコードでこのマニフェストを模倣したいと思います。 YAMLバイトをいくつかの(アン)マーシャリングして、パッケージで定義されている正しいAPIタイプに変換する必要があることを理解しています:https : //github.com/kubernetes/api Createクラスターに単一のAPIタイプを正常に編集しましたが、同じではないタイプのリストを含むマニフェストでこれを行うにはどうすればよいですか?kind: List*これらのさまざまなタイプをサポートするリソースはありますか? 現在の回避策はcsplit、区切り記号として---を使用してYAMLファイルを分割することです csplit /path/to/recommended.yaml /---/ '{*}' --prefix='dashboard.' --suffix-format='%03d.yaml' 次に、作成された新しい(14)パーツをループし、それらのバイトを読み取り、UniversalDeserializerのデコーダーによって返されたオブジェクトのタイプを切り替え、k8sクライアントセットを使用して正しいAPIメソッドを呼び出します。 これをプログラムで実行して、ダッシュボードの新しいバージョンをクラスターに更新します。また、Metrics Serverや他の多くのリソースに対してもこれを行う必要があります。代替の(おそらくより簡単な)メソッドは、コンテナーイメージにインストールされたkubectlを使用してコードを出荷し、直接呼び出すことkubectl apply -f -です。しかし、それは、kubectlがそれを使用できるように、kube構成をディスクに書き込むか、インラインで渡す必要があることも意味します。 この問題が役立つことがわかりました:https : //github.com/kubernetes/client-go/issues/193 デコーダーはここにあります:https : //github.com/kubernetes/apimachinery/tree/master/pkg/runtime/シリアライザ ここでclient-goに公開されています:https : //github.com/kubernetes/client-go/blob/master/kubernetes/scheme/register.go#L69 私はまた、kubectlで使用されているRunConvert方法を見て撮影した:https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/cmd/convert/convert.go#L139をし、そのIを想定します独自のgenericclioptions.IOStreamsを提供して出力を取得できますか? RunConvertは廃止予定のパスにあるようです [client-go]とタグ付けされた他の質問も調べましたが、ほとんどの場合、古い例を使用するか、単一のkind定義が含まれているYAMLファイルを使用しています。その後、APIが変更されました。 編集:複数のクラスターに対してこれを行う必要があり、プログラムでクラスターを作成しているため(AWS EKS API + CloudFormation / eksctl)、ServiceAccount多くのAWSアカウントにわたって、多くのクラスターコンテキストにわたってsを作成するオーバーヘッドを最小限に抑えたいと思います。理想的には、クライアントセットの作成に関連する唯一の認証手順は、aws-iam-authenticatorを使用して、クラスターデータ(名前、地域、CA証明書など)を使用してトークンを取得することです。aws-iam-authenticatorはしばらくリリースされていませんが、その内容でmasterは、サードパーティの役割のクロスアカウントの役割と外部IDを使用して渡すことができます。IMO、これはServiceAccount(およびIRSA)アプリケーション(アドオンを作成してこれらのクラスターに適用するバックエンドAPI)が対話する必要がある他のAWSサービスがあるため。 編集:私は最近https://github.com/ericchiang/k8sを見つけました。高レベルでのclient-goよりも使い方は間違いなく簡単ですが、この動作はサポートされていません。

2
Dockerイメージのサイズを計算するためのソースコードを見つける
この数は、画像内に追加されるレイヤーのすべてのサイズと同じではないと聞きました。また、それが占有するディスク領域のサイズでもありません。 ここで、ソースコード(このリポジトリのhttps://github.com/docker/docker-ce)でロジックを確認したいと思います。しかし、コードを何度もナビゲートした後、実際のimag-sizeコンピューティングコードを見つけることができなかったことがわかりました。 では、Dockerはサイズロジックの実行にどの関数/ファイルを使用していますか?
8 docker  go  docker-ce 

2
*(* uintptr)と**(** uintptr)の違いは何ですか
Go runtime/proc.goには、以下に示すコードがあります。 // funcPCは関数fのエントリPCを返します。 // fはfunc値であると想定しています。それ以外の場合の動作は未定義です。 //注意:プラグインを使用するプログラムでは、funcPC は同じ関数に対して// 異なる値を返す可能性があります(実際に は、アドレス空間に同じ関数の// 複数のコピーがあるため)。安全のため、 この関数の//結果を==式で使用しないでください。 //結果をコードの実行を開始するアドレスとして使用するのが安全です。 //go:nosplit func funcPC(f interface{}) uintptr { return **(**uintptr)(add(unsafe.Pointer(&f), sys.PtrSize)) } **(** uintptr)の代わりに*(* uintptr)を使用しないのはなぜですか。 だから私は理解するために以下のテストプログラムを書きます。 package main import ( "fmt" "unsafe" ) func main(){ fmt.Println() p := funcPC(test) fmt.Println(p) p1 := funcPC1(test) fmt.Println(p1) p2 := funcPC(test) fmt.Println(p2) } …
8 function  pointers  go 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.