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