浏览代码

学习笔记备份提交

master
SisMaker 4 年前
父节点
当前提交
4bc522d2b9
共有 3 个文件被更改,包括 57 次插入4 次删除
  1. +10
    -1
      src/go101/go常量和变量.md
  2. +34
    -0
      src/gtString.go
  3. +13
    -3
      src/learn/hello.go

src/go101/go常量与变量.md → src/go101/go常量和变量.md 查看文件

@ -20,4 +20,13 @@
内的整数 v , 转换结果等同于字符串字面量 "\uFFFD" (亦即 "\xef\xbf\xbd" )。 0xFFFD 是
Unicode标准中的(非法码点的)替换字符值。 (但是请注意,今后的Go版本可能只允许rune或
者byte整数被转换为字符串 ? 。 从Go官方工具链1.15版本开始, go vet 命令会对从非rune和非
byte整数到字符串的转换做出警告。)
byte整数到字符串的转换做出警告。)
# 变量
包级别的变量在声明的时候依赖关系将影响他们的初始化顺序
# 常量表达式
当一个运算表达式所涉及的是所有操作都是常量的时候,此表达式称为一个常量表达式
一个常量表达式的估值是在编译阶段进行的。一个常量表达式的估值依然是一个常量。
如果一个表达式中涉及到的操作数中至少有一个不为常量,则此表达式称为非常量表达式

+ 34
- 0
src/gtString.go 查看文件

@ -0,0 +1,34 @@
package goUtils
import (
"reflect"
"unsafe"
)
// string与[]byte的转换
// Golang中,string从设计上是不可变(immutable)的。因此,string和[]byte的类型转换,都是产生一份新的副本。
//
// func Example() {
// s := "Hello,world"
// b := []byte(s)
// }
// 如果确定转换的string/[]byte不会被修改,可以进行直接的转换,这样不会生成原有变量的副本。新的变量共享底层的数据指针。
func StrToBytes(s string) []byte {
stringHeader := (*reflect.StringHeader)(unsafe.Pointer(&s))
bh := reflect.SliceHeader{
Data: stringHeader.Data,
Len: stringHeader.Len,
Cap: stringHeader.Len,
}
return *(*[]byte)(unsafe.Pointer(&bh))
}
func BytesToStr(b []byte) string {
sliceHeader
sh := reflect.StringHeader{
Data: sliceHeader.Data,
Len: sliceHeader.Len,
}
return *(*string)(unsafe.Pointer(&sh))
}

+ 13
- 3
src/learn/hello.go 查看文件

@ -1,7 +1,17 @@
package learn
package main
import "fmt"
import (
"fmt"
)
const (
HELLO1 = "123"
HELLO2 = HELLO1
HELLO4 = HELLO3
HELLO3 = "456"
)
func main() {
fmt.Println("hello world!")
fmt.Println("hello world!", HELLO3, HELLO2)
fmt.Println("IMY********", aa, -5/2)
}

正在加载...
取消
保存