Skip to content

Commit 3c7656b

Browse files
authored
Merge pull request #665 from devlights:add-builtin-examples
Add builtin func examples
2 parents 66fdb8c + 002c9c4 commit 3c7656b

File tree

4 files changed

+84
-0
lines changed

4 files changed

+84
-0
lines changed

examples/basic/builtins/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
|file|example name|note|
66
|----|------------|----|
7+
|copy.go|builtin\_copy|ビルトイン関数 copy についてのサンプルです.|
8+
|delete.go|builtin\_delete|ビルトイン関数 delete についてのサンプルです.|
79
|printfunc.go|builtin\_print|ビルドイン関数のprintとfmt.Printの違いについてのサンプルです.|
810
|minmax.go|builtin\_minmax|Go 1.21 で追加されたビルトイン関数のmin,maxについてのサンプルです.|
911
|clear.go|builtin\_clear|Go 1.21 で追加されたビルトイン関数のclearについてのサンプルです.|

examples/basic/builtins/copy.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package builtins
2+
3+
import "github.com/devlights/gomy/output"
4+
5+
// Copy は、ビルトイン関数 copy についてのサンプルです.
6+
//
7+
// # REFERENCES
8+
// - https://pkg.go.dev/builtin@go1.21.0#copy
9+
func Copy() error {
10+
//
11+
// copy(dst, src) は、srcからdstへ要素をコピーする
12+
// - 特例として dst=[]byte, src=string の場合は動作するようになっている
13+
//
14+
var (
15+
src1 = []int{1, 2, 3, 4, 5}
16+
src2 = src1[:3]
17+
dst1 = make([]int, len(src1))
18+
dst2 = make([]int, len(src1)-1)
19+
dst3 = make([]int, len(src1)-1)
20+
p = func() {
21+
output.Stdoutl("[src1]", src1)
22+
output.Stdoutl("[src2]", src2)
23+
output.Stdoutl("[dst1]", dst1)
24+
output.Stdoutl("[dst2]", dst2)
25+
output.Stdoutl("[dst3]", dst3)
26+
output.StdoutHr()
27+
}
28+
)
29+
30+
p()
31+
copy(dst1, src1)
32+
copy(dst2, src1)
33+
copy(dst3, src2)
34+
p()
35+
dst1[0] = 100
36+
dst2[0] = 200
37+
dst3[0] = 300
38+
p()
39+
40+
var (
41+
dst4 = make([]byte, 10)
42+
src3 = "hello world"
43+
)
44+
45+
// dst=[]byte, src=string は型が異なるが特別に許可される
46+
copy(dst4, src3)
47+
output.Stdoutl("[dst4]", dst4)
48+
49+
return nil
50+
}

examples/basic/builtins/delete.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package builtins
2+
3+
import "github.com/devlights/gomy/output"
4+
5+
// Delete は、ビルトイン関数 delete についてのサンプルです.
6+
//
7+
// # REFERENCES
8+
// - https://pkg.go.dev/builtin@go1.21.0#delete
9+
func Delete() error {
10+
//
11+
// delete は、mapから特定のキーを削除するビルトイン関数
12+
// - 存在しないキーを指定してもエラーにはならない
13+
//
14+
var (
15+
m = map[string]int{
16+
"apple": 100,
17+
"ringo": 200,
18+
}
19+
p = func(m map[string]int) {
20+
output.Stdoutl("[map]", m)
21+
}
22+
)
23+
24+
p(m)
25+
delete(m, "ringo")
26+
delete(m, "hoge")
27+
p(m)
28+
29+
return nil
30+
}

examples/basic/builtins/examples.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ func (r *register) Regist(m mapping.ExampleMapping) {
1616
m["builtin_print"] = PrintFunc
1717
m["builtin_minmax"] = MinMax
1818
m["builtin_clear"] = Clear
19+
m["builtin_delete"] = Delete
20+
m["builtin_copy"] = Copy
1921
}

0 commit comments

Comments
 (0)