MENU

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

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

今回は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をもっと詳しくなりたい方に

golang学習のために筆者が実際に受講したUdemy教材をまとめています。

あわせて読みたい
【入門】golangの学習におすすめのUdemy教材5選 これから業務でgolangを使うことになった方、これからgolangを使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...

golang学習のために筆者が実際に読んでおすすめしたい本をまとめています。

あわせて読みたい
【入門】golangの学習におすすめの本/書籍7選 これから業務でgolangを使うことになった方、これからgolangを使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...
タメになったらシェアお願いします!
  • URLをコピーしました!
  • URLをコピーしました!
目次