LoginSignup
2
1

More than 3 years have passed since last update.

Golang関数+構造体まとめ(お勉強用)

Last updated at Posted at 2019-05-27

Golangを覚え始めたのですが、某パブリッククラウドの某サーバレスサービスで、
Golangでファンクション作っている時にまとめたくなりここに記載します。

基本形

func 関数名 (引数 ) {
    // 処理
}

引数はカンマで区切り複数指定できる。

func 関数名 (引数 , 引数 , 引数 ) {
    // 処理
}

)
func ociComputeEventHandler(ctx context.Context, in io.Reader, out io.Writer) {
    処理
}

戻り値も定義できる。

とりあえずデータ型を指定。

func 関数名 (引数 )  {
    // 処理
    return 
}

戻り値を指定できるし、こちらもカンマで複数指定できる。

func 関数名 (引数 ) (戻り値 , 戻り値 ) {
    // 処理
    return , 
}

) エラーハンドリングでよく使う
func canStringBeRegion(stringRegion string) (region string, err error) {
    if blankRegex.MatchString(stringRegion) || stringRegion == "" {
        return "", fmt.Errorf("region can not be empty or have spaces")
    }
    return stringRegion, nil
}

スライスを関数で扱う。

fucn 関数名() スライス {
    // 処理

}

)
func GetListInstancesSortByEnumValues() []ListInstancesSortByEnum {
    values := make([]ListInstancesSortByEnum, 0)
    for _, v := range mappingListInstancesSortBy {
        values = append(values, v)
    }
    return value
}

構造体の関数

関数名の前に「(変数名 構造体)」を付け加えます。

type 構造体 struct {
    // フィールド定義
}

func (変数名 構造体) 関数名(変数名 )  {
    // 処理
    return 
}

)
type FailedResponse struct {
    Message string
    Error   string
}

func (response FailedResponse) toString() string {
    return response.Message + " due to " + response.Error
}

参考:
チュートリアル
https://go-tour-jp.appspot.com/basics/4

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1