Go 入門

Go言語入門⑬ ~Stringer・カスタムエラー~

[box class="blue_box" title="☑本記事の内容"]

  • Stringer
  • カスタムエラー

[/box]
参考資料:現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発
[box class="glay_box" title="Contents"]

  1. Go入門-Stringer-
  2. Go入門-カスタムエラー-

[/box]

Go入門-Stringer-

[box class="yellow_box" title="✔Stringerの目次"]

[/box]

基本的なこと

[box class="glay_box"]

  • Stringの出力方法を変えたいときに使用する
  • 下記の場合だと年齢まで表示される

[/box]

package main

import "fmt"

type Person struct {
	Name string
	Age  int
}

func main() {
	mike := Person{"Mike", 22}
	fmt.Println(mike)
}
(結果)
{Mike 22}

[box class="glay_box"]

  • String()を使用して出力方法を変更する

[/box]

package main

import "fmt"

type Person struct {
	Name string
	Age  int
}

func (p Person) String() string {
	fmt.Println("My name is " + p.Name + ".")
	return fmt.Sprintf("My name is %v.", p.Name)
}

func main() {
	mike := Person{"Mike", 22}
	fmt.Println(mike)
}
(結果)
My name is Mike.
My name is Mike.

Go入門-カスタムエラー-

[box class="yellow_box" title="✔カスタムエラーの目次"]

[/box]

基本的なこと

[box class="glay_box"]

  • 自分で好きなエラーを作成出来る
  • 作成する際は基本的にはアスタリスク(*)をつけてアドレスにする

[/box]

package main

import (
	"fmt"
)

type UserNotFound struct {
	Username string
}

func (e *UserNotFound) Error() string {
	return fmt.Sprintf("User not found: %v", e.Username)
}

func myFunc() error {
	ok := false
	if ok {
		return nil
	}
	return &UserNotFound{Username: "mike"}
}

func main() {
	if err := myFunc(); err != nil {
		fmt.Println(err)
	}
}
(結果)
User not found: mike

Go言語入門⑭へ ≫

≪ Go言語入門⑫へ

目次

-Go, 入門