Skip to content

Commit 784caf2

Browse files
authored
Merge pull request #660 from devlights:add-go121-example
Add Go 1.21 min,max example
2 parents 35405b0 + 2b71996 commit 784caf2

File tree

3 files changed

+48
-1
lines changed

3 files changed

+48
-1
lines changed

examples/basic/builtins/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
|file|example name|note|
66
|----|------------|----|
77
|printfunc.go|builtin\_print|ビルドイン関数のprintとfmt.Printの違いについてのサンプルです.|
8-
8+
|minmax.go|builtin\_minmax|Go 1.21 で追加されたビルトイン関数のmin,maxについてのサンプルです.|

examples/basic/builtins/examples.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ func NewRegister() mapping.Register {
1414
// Regist -- 登録します.
1515
func (r *register) Regist(m mapping.ExampleMapping) {
1616
m["builtin_print"] = PrintFunc
17+
m["builtin_minmax"] = MinMax
1718
}

examples/basic/builtins/minmax.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package builtins
2+
3+
import "github.com/devlights/gomy/output"
4+
5+
// MinMax は、Go 1.21 で追加されたビルトイン関数のmin,maxについてのサンプルです.
6+
//
7+
// go doc で調べる場合は以下のようにします.
8+
//
9+
// - go doc builtin.max
10+
// - go doc builtin.min
11+
//
12+
// # REFERENCES
13+
// - https://go.dev/ref/spec#Min_and_max
14+
func MinMax() error {
15+
//
16+
// max, min は、Go 1.21から追加されたビルトイン関数
17+
//
18+
// - スライスは指定できない
19+
//
20+
var (
21+
x1 = 10
22+
x2 = 20
23+
)
24+
output.Stdoutf("[max(x1, x2)]", "%v\n", max(x1, x2))
25+
output.Stdoutf("[min(x1, x2)]", "%v\n", min(x1, x2))
26+
27+
var (
28+
x3 = 2
29+
)
30+
output.Stdoutf("[max(x1, x2, x3)]", "%v\n", max(x1, x2, x3))
31+
output.Stdoutf("[min(x1, x2, x3)]", "%v\n", min(x1, x2, x3))
32+
33+
// min, maxの型引数は cmp.Ordered となっているので 数値系と文字列 を渡せる
34+
var (
35+
x4 = "hello"
36+
x5 = "world"
37+
)
38+
output.Stdoutf("[max(x4, x5)]", "%v\n", max(x4, x5))
39+
output.Stdoutf("[min(x4, x5)]", "%v\n", min(x4, x5))
40+
41+
// スライスと配列は渡すことが出来ない
42+
// min([]int{1,2,3}) // コンパイルエラー
43+
// min([3]int{1,2,3}) // コンパイルエラー
44+
45+
return nil
46+
}

0 commit comments

Comments
 (0)