Skip to content

Commit

Permalink
maybe last upload
Browse files Browse the repository at this point in the history
  • Loading branch information
ruo-xi committed Oct 18, 2020
1 parent dac67e3 commit a0d3040
Show file tree
Hide file tree
Showing 27 changed files with 696 additions and 60 deletions.
16 changes: 16 additions & 0 deletions basic/rune/rune.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package main

import "fmt"

func main() {
s := "宇大帅比"
rs := []rune(s)
fmt.Println(s, "\n", rs)
rs[1] = '太'
rs[3] = '了'
fmt.Println(string(rs))

s1 := "hello"
fmt.Println([]byte(s1), "\n", []rune(s1))

}
29 changes: 29 additions & 0 deletions basic/string/string.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package main

import (
"fmt"
"strings"
)

func main() {
s1 := "1\\.1"
s2 := `1\\.1`
fmt.Println(s1)
fmt.Println(s2)
//拼接
s3 := fmt.Sprintf("%s%s", s1, s2)
fmt.Println(s1 + s2)
fmt.Println(s3)
//分割
fmt.Println(strings.Split(s2, "."))
//包含
fmt.Println(strings.Contains(s1, "1"))
//前缀后缀判断
fmt.Println(strings.HasPrefix(s1, "1"))
fmt.Println(strings.HasSuffix(s1, "1"))
//字串的位置
fmt.Println(strings.LastIndex(s3, `\\`))
//JOIN
fmt.Println(strings.Join([]string{"1", "b"}, ","))

}
9 changes: 9 additions & 0 deletions cgo/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package main

// #include <stdio.h>
// #include <stdlib.h>
import "C"

func main() {

}
11 changes: 7 additions & 4 deletions channel/channel.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func chanDemo() {
time.Sleep(time.Millisecond)
}

func worker(id int, c chan int) {
func worker(id int, c <-chan int) {
//for true {
// n, ok := <-c
// if !ok {
Expand Down Expand Up @@ -66,14 +66,17 @@ func channelClose() {
c <- 'a' + 2
c <- 'a' + 3
c <- 'a' + 4
close(c)
time.Sleep(time.Millisecond)
}
func main() {
fmt.Println("Channel as first-class citizen")
//chanDemo()
chanDemo()

time.Sleep(time.Second)
fmt.Println("Buffered channel")
//bufferedChannel()
bufferedChannel()

time.Sleep(time.Second)
fmt.Println("Channel close and range")
channelClose()
}
9 changes: 4 additions & 5 deletions container/slice/slice.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,22 @@ import "fmt"

func main() {
arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7}
fmt.Println("arr[2:6] =", arr[2:6])
fmt.Println("arr[2:6] =", arr[2:6], cap(arr[2:6]))
fmt.Println("arr[2:6] =", arr[:6])
s1 := arr[2:]
updateSlice(s1)
fmt.Println("arr[2:6] =", s1)
fmt.Println("arr[2:6] =", arr[2:6])
s2 := arr[:]
updateSlice(s2)
fmt.Println("arr[2:6] =", s2)
fmt.Println("arr[:6] =", arr[:6])
fmt.Println(arr)

arr[0], arr[2] = 0, 2
fmt.Println(arr)
s1 = arr[2:6]
fmt.Println(s1)
s2 = s1[3:5]
fmt.Println(s1, len(s2), cap(s2))
fmt.Println(s2, len(s2), cap(s2))
fmt.Println(s2[0:3])

//超过cap长度后 会重新创建一个
Expand All @@ -38,7 +38,6 @@ func main() {
//s4 s5 不再以arr为视图
fmt.Println(s3, s4, s5)
fmt.Println(arr)

}

func updateSlice(s []int) {
Expand Down
7 changes: 6 additions & 1 deletion container/sliceOps/sliceops.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ func main() {
for i := 0; i < 100; i++ {
s = append(s, 2*i+1)
printSlice(s)

}
fmt.Println(s)

Expand All @@ -23,7 +22,9 @@ func main() {
printSlice(s2)

//s2[:3] + s2[4:]
fmt.Println(&s2[15], s2[15])
s2 = append(s2[:3], s2[4:]...)
fmt.Println(&s2[14], s2[14])
printSlice(s2)

front := s2[0]
Expand All @@ -35,6 +36,10 @@ func main() {
s2 = s2[:len(s2)-1]
printSlice(s2)
println(tail)

c1 := []int{0, 1, 2, 3}
c1 = append(c1, 4, 5, 6, 7, 8)
printSlice(c1)
}

func printSlice(s []int) {
Expand Down
2 changes: 1 addition & 1 deletion errhandling/filelistingserver/web.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package main

import (
"learn-go/errhandling/filelistingserver/filelisting"
"log"
"net/http"
"os"
"ruo-xi/learn-go/errhandling/filelistingserver/filelisting"
)

type appHandler func(writer http.ResponseWriter, request *http.Request) error
Expand Down
3 changes: 1 addition & 2 deletions functional/main.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package main

import "learn-go/functional/fib"
import "ruo-xi/learn-go/functional/fib"

func main() {
f := fib.Fibonacci()
//for i := 0; i < 10; i++ {
// println(f())
//}
fib.PrintFileContents(f)

}
5 changes: 5 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module ruo-xi/learn-go

go 1.14

require github.com/go-sql-driver/mysql v1.5.0
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
40 changes: 0 additions & 40 deletions http/client.go

This file was deleted.

130 changes: 130 additions & 0 deletions more/file/file.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
package main

import (
"fmt"
"os"
"path"
"path/filepath"
)

func main() {

/*
路径
相对路径 relatice
相对于当前工程
绝对路径 absolute
*/
//路径
fileName1 := "/home/yu/Desktop/learn-go/fib.txt"
fileName2 := "fib.txt"
fmt.Println(filepath.IsAbs(fileName1))
fmt.Println(filepath.Abs(fileName1))
fmt.Println(filepath.IsAbs(fileName2))
fmt.Println(filepath.Abs(fileName2))
fmt.Println("获取父目录:", path.Join(fileName1, ".."))

//创建目录
createDir()

//创建文件
err, done := createFile()
if done {
return
}
//打开文件
file3, done2 := openFile(err, fileName2)
if done2 {
return
}

//关闭文件
file3.Close()

//删除文件或文件夹
removeFile(err)
}

func createDir() {
//创建目录
os.Mkdir("a", os.ModePerm)
os.MkdirAll("a/b/c/d", os.ModePerm)
}

func createFile() (error, bool) {
file1, err := os.Create("a/a1.txt")
//采用模式0666创建一个名为name的文件,如果文件已存在会截断它(为空文件)。
//如果成功,返回的文件对象可用于I/O;
//对应的文件描述符具有O_RDWR模式。如果出错,错误底层类型是*PathError。
if err != nil {
fmt.Println("err:", err)
return nil, true
}
fmt.Println(file1)
return err, false
}

func openFile(err error, fileName2 string) (*os.File, bool) {
/*
打开文件
os.Open(filename)
os.OpenFile(filename, mode, perm)
filename/文件名
mode/打开方式
const (
O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件
O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件
O_RDWR int = syscall.O_RDWR // 读写模式打开文件
O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部
O_CREATE int = syscall.O_CREAT // 如果不存在将创建一个新文件
O_EXCL int = syscall.O_EXCL // 和O_CREATE配合使用,文件必须不存在
O_SYNC int = syscall.O_SYNC // 打开文件用于同步I/O
O_TRUNC int = syscall.O_TRUNC // 如果可能,打开时清空文件
)
perm/文件不存在时,创建文件指定权限
*/

file2, err := os.Open(fileName2)
//只读
if err != nil {
fmt.Println("err", err)
return nil, true
}
fmt.Println(file2)

file3, err := os.OpenFile(fileName2, os.O_RDONLY|os.O_WRONLY, os.ModePerm)
//可选
if err != nil {
fmt.Println("err:", err)
return nil, true
}
fmt.Println(file3)
return file3, false
}

func removeFile(err error) {
err = os.Remove("a/a1.txt")

if err != nil {
fmt.Println("err:", err)
return
}

err = os.Remove("a/b/c/d")
if err != nil {
fmt.Println("err:", err)
return
}

err = os.Remove("a")
if err != nil {
fmt.Println("err:", err)
return
}

err = os.RemoveAll("a")
if err != nil {
fmt.Println("err:", err)
return
}
}
Loading

0 comments on commit a0d3040

Please sign in to comment.