見出し画像

golangで「non-name ~ on left side of :=」というエラーが出たときの原因と対処法

今回はgolangで「non-name ~ on left side of :=」というエラーが出たときの原因と解決策について紹介していきます。


golangで「non-name ~ on left side of :=」というエラーが出た

golangで開発を行っていると「non-name ~ on left side of :=」というエラーに遭遇します。

「non-name ~ on left side of :=」の「~」の箇所にはstructのフィールド名などが表示されます。


「non-name ~ on left side of :=」の原因

package main

import (
	"fmt"
)

type xxxxxx struct {
	text string
}

func hoge() (string, error) {
	return "aaaa", nil
}
func main() {
	xxxxxx.text, err := hoge()
	fmt.Println(xxxxxx)
}

上記コードのようにhoge()という関数の返り値をxxxxxxというstructのtextに代入しようとしています。

しかしgolangでは短い変数宣言を用いてフィールドに値を設定することはできません。上記コードをコンパイルすると以下のエラーが発生します。

main.go:15:2: non-name xxxxxx.text on left side of :=


「non-name ~ on left side of :=」の対処法

このエラーを解消するには、一時的に変数を用いるか、もしくは変数を事前に宣言しておくことが必要です。

以下のようにstructのxxxxxxをyyyyyyとして一時変数に入れます。次にhoge()関数のもう一つの返り値としてエラーが返ってきますが、このエラーの型をerrとして事前に宣言します。

package main

import (
	"fmt"
)

type xxxxxx struct {
	text string
}

func hoge() (string, error) {
	return "aaaa", nil
}
func main() {
	var yyyyyy xxxxxx
	var err error

	yyyyyy.text, err = hoge()
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(yyyyyy)
}

このように実装することでエラーは解消され、正常実行することができます。

実行結果は{aaaa}が出力されます。


golangの案件を探すならクラウドワークス テック

・97%がリモートのお仕事
・週4日、週3日OKのお仕事多数
・登録社数74万件業界トップクラス
・2〜4週間程度でお仕事決定
・案件提案から契約締結、勤怠管理もすべてオンライン完結
・継続率90%!一人ひとりをサポート
・参画後の評価で委託料が上がる認定パートナー制度
・簡単60秒で登録


golangをもっと詳しくなりたい方に

初めてのGo言語

Go言語の入門から応用まではこの一冊で網羅されています。説明も順序立てて説明されており完成度の高い参考書となっています。


詳解Go言語Webアプリケーション開発

こちらはGo言語の基礎知識を得たあとに読むことをすすめる本となっています。ハンズオン形式で手を動かしながら実装をしていくことができるため、実際の開発を意識しながらGo言語を学ぶことができます。

以下の記事では他にも筆者が実際に読んでおすすめしたい本をまとめています。


【Go入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)

まだGo言語の勉強を始めていない方、全くの初心者の方にはこちらのUdemy教材が最もおすすめです。

この教材ではgolangの基礎について網羅的に学ぶことができます。ただ見て学ぶだけでなく、講座の中でアプリ作成まで行うことで学んだことの理解をさらに深めることができます。


現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発

個人的に最も勉強になったのは「現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発」という教材です。
本格的なレクチャーに入る前に、なぜGoなのか、なぜFintechなのかについて説明されていることで、Goの概念や意味について大枠から理解することができます。

以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?