スライスから型を作成
スタックのようなデータ型を作成したいと考えています。 「上部」でエントリを追加および削除し、それらを印刷できるようにしたいと考えています。この例では、xpath タイプを使用して xml ドキュメントを走査し、現在のパスを追跡します。
そこで、xpath[]string 型を作成し、対応する関数、つまり、push()、pop()、および string() を作成しました。
私の問題は、型がその状態を失うことです。スライスは参照型だと思っていたので、少し混乱しています。また、関数をポインター レシーバーに変更しようとすると、いくつかのコンパイル エラーが発生します。この時点でこれを修正するために、[]string を単一の []string フィールドを持つ構造体に変更しました。ただし、基本タイプとしてスライスだけを使用して機能させることができないのはまだ気になります。
正しいアプローチは何ですか?
package main import ( "fmt" "strings" ) type xPath []string func (xp xPath) push(entry string) { xp = append(xp, entry) } func (xp xPath) String() string { sb := strings.Builder{} sb.WriteString("/") sb.WriteString(strings.Join(xp, "/")) return sb.String() } func main() { xp := xPath{} xp.push("rss") xp.push("channel") xp.push("items") fmt.Println(xp) // Output: / // Wanted: /rss/channel/items }
正解
プッシュ関数は何も行っていません。
正しいプッシュ機能:
リーリー
スライスは、値を変更したい状況 (インデックスの使用など) における参照タイプです。一方、それらを再割り当てしてスライス全体を置き換える場合は、ポインタを使用する必要があります。
スタックに関しては、もっと良い方法がいくつかあります。
この質問を見てください。
以上がスライスから型を作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Apple M1 Chip MacにRedisをコンパイルおよびインストールする際に遭遇する問題とソリューション、多くのユーザーは...

リアルタイムのビットコインUSD価格 ビットコインの価格に影響を与える要因 将来のビットコイン価格を予測するための指標 2018年から2024年のビットコインの価格に関する重要な情報を次に示します。

CSSでサイズ変更シンボルをカスタマイズする方法は、背景色で統一されています。毎日の開発では、調整など、ユーザーインターフェイスの詳細をカスタマイズする必要がある状況に遭遇することがよくあります...

セグメントターの45度の曲線効果を達成する方法は?セグメンテーションデバイスを実装する過程で、左ボタンをクリックすると、適切な境界線を45度の曲線に変える方法とポイント...

はい、H5ページの生産は、HTML、CSS、JavaScriptなどのコアテクノロジーを含むフロントエンド開発のための重要な実装方法です。開発者は、< canvas>の使用など、これらのテクノロジーを巧みに組み合わせることにより、動的で強力なH5ページを構築します。グラフィックを描画するタグまたはJavaScriptを使用して相互作用の動作を制御します。

C言語識別子は、混乱や維持の困難を引き起こす可能性があるため、スペースを含めることができません。特定のルールは次のとおりです。それらは、文字またはアンダースコアから始めなければなりません。文字、番号、またはアンダースコアを含めることができます。違法な文字(特別なシンボルなど)を含めることはできません。

フレックスレイアウトとソリューションの下でのテキストの過度の省略によるコンテナの開口部の問題が使用されます...

ビットコインの重要なノード履歴価格2009年1月3日:ジェネシスブロックが生成され、最初のビットコインが生成され、値0の値が生成されました。 10月5日:最初のビットコイントランザクション、プログラマーが10,000ドルのビットコインを備えた2つのピザを購入しました。これは0.008ドルに相当します。 2010年2月9日:Gox Moux Exchangeはオンラインになり、初期のビットコイン取引の主要なプラットフォームになりました。 5月22日:ビットコインは初めて1ドルを破ります。 7月17日:ビットコインプライスは0.008ドルに急落し、史上最低値に達しました。 2011年2月9日:ビットコインの価格は初めて10ドルを破ります。 4月10日:Mt。Go
