package
0.0.0-20210911005019-8a26e672d2db
Repository: https://github.com/renyddd/golang.git
Documentation: pkg.go.dev
# Packages
No description provided by the author
# README
nowcoder 牛客网刷体记录
在刚开始训练时,本地提供完整的可运行代码。 最好每章都能有必要的注释,或者加上一些 go 语言语法的拓展部分。
读取用户输入
使用fmt
包中的Scanln
函数:
var n1, n2 int
fmt.Scanln(&n1, &n2)
或者使用bufio
包缓冲读写,待补充。
近期时间有限,一定要用在紧迫的技能上!
ListNode
合并链表
使用 new
为结构体变量分配内存,分配当前类型所属的零直:
var head = new(ListHead)
head := new(ListHead)
或者使用混合字面量语法(composite literal syntax)&struct1{1,nil}
,其为一种简写但底层还是在调用new
,此时赋值的字段必须按照顺序来写。
当然这样是等价的new(ListHead)
, &ListHead{}
。
head := &ListHead{Val: 5, Next: nil}
为类型定义结构体工厂,工厂名以 new 或者 New 开头,一次来简单的实现构造函数:
func NewListNode(val int, next *ListNode) *ListNode {
if val < 0 { // 强迫 Val 直大于零
return nil
}
return &ListNode{Val: val, Next: next}
}
同样运用可见性规则(当标识符以大写字母开头则其对象可被外部包代码所使用),可以强制使用工厂函数。