Giter Site home page Giter Site logo

go-fundamental-programming's Introduction

Hi there 👋

Thanks for visiting my GitHub profile, it's great to meet you here! 😊

Here are some quick things about me:

  • 🔭 I'm a pragmatic software engineer who is paranoid about convention, consistency, and constraints.
  • 🕵️‍♀️ I like doing quality work, and a real asshole on pull request reviews.
  • 🧸 I'm proud of who I am, what I have built, and what I am building.
  • 🧑‍💻 Coding is my passion.
  • 📫 The best way to reach me is to send me an email.
  • ⚡ Fun fact: I once drove to the Half Moon Bay for sun rise (hint: it's on the west coast).
  • 📰 If you like my work, please consider give my newsletter Identity, Authenticity, and Security a look!

go-fundamental-programming's People

Contributors

shesuyo avatar unknwon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

go-fundamental-programming's Issues

go recover疑问

老师,为什么不需要return,可以获取到err

func TestB() (err error){
	defer func() {
		if x := recover(); x != nil{
			fmt.Println("hello world")
			err = fmt.Errorf("internal error: %v", x)
		}
	}()
	panic("func TestB(): panic")
}

上传到B站

作者你可以上传视频到B站,有两点好处

  1. B站的用户多,而B站可以为UP主充电,这可以赚钱。而把项目地址放到评论区,既可以增加项目star,又能获得更多支付宝捐赠
  2. B站的视频传输质量更高,可以获得更加高清的视频效果

关于课后作业的问题。

版本是go1.8.3 darwin/amd64
按照老师的写法,deadlock
fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan send]:
main.main()
	/Users/LuJun/go/development/src/lesson13.go:20 +0x137

goroutine 5 [chan receive (nil chan)]:
main.Pingpang()
	/Users/LuJun/go/development/src/lesson13.go:11 +0x67
created by main.main
	/Users/LuJun/go/development/src/lesson13.go:18 +0x6a
exit status 2

exit status 1

我也是生命的全局变量chan,然后方法里传入这个变量后,程序正常,不知道是否是go版本的问题。

slice并不是copy

首先非常感谢无闻老师您的付出,对于推动Golang在国内的流行起到很大作用,谢谢。

但难免有点错误,希望每个Lecture里面都能加入勘误:

在介绍slice章节的时候,您的课后作业说怎么copy一个array, 但是用到的确实slice,这不是真正意义上的copy呀。

您的做法
a := []int{1,2,3}
b := a[:]
建议做法:
a := []int{1,2,3}
b := make([]int, len(a))
b := copy(b, a)

听课初感受

我是一名大四学生,自动化专业,无意看到你的教程,之前听说过Go,也知道Go很年轻,本着没事儿玩一玩的态度,能了解一下Go语言何尝不可,因为我比较喜欢新鲜的东西,嘿嘿,现在刚看到第四课,个人觉得,你讲的很好唉,哈哈,讲的很明白,个人觉得开源是美丽的,无私奉献更是伟大的,你的所作所为,值得我去学习!

第10课里struct内嵌结构字面量声明的问题

首先感谢无闻老师精彩的课程。

在学习第10课 struct结构时,其中讲解到内嵌struct字面量声明部分(视频第28分钟),无闻老师对于下面的声明解释我觉得没有说清楚,也可能是我没有理解清楚:

a := teacher{Name: "joe", Age: 19, human{Sex: 1}}

对于编译不过,老师的解释是需要声明为human: human{Sex: 1}才对,但是我仔细看了报错信息:

error:
mixture of field:value and value initializers
exit status 2

大致的意思是说,这个错误的原因是用了field:valuevalue混合的声明,所以解决这个错误我用了另一个方式:

a := teacher{"joe", 19, human{Sex: 1}}

这是我这个菜鸟的一点拙见,请无闻老师指正!

应该如何配置sublime,运算符两边就能自动添加空格

老师您好,正在看您的视频教程,受益匪浅。十分感谢。
看到视频演示中,您输入一行代码,回车后代码中一些运算符两边就会自动添加空格,如a:=1,回车后就会自动变成a := 1,觉得这个功能很实用,但自己摸索半天后仍没能实现。
不知应该如何配置,求赐教

fallthrough用法

switch语句中,在case中使用fallthrough,会继续往下执行,但是并不会去判断下一个case是否符合条件,而是直接会执行下一个case中的代码。有点类似 try cathc finall。
image
image

15课里面的time.Format问题

感谢您的课程

感觉time.Format并不是一个坑,以前也以为为什么要用“Mon Jan 2 15:04:05 MST 2006” 这样的格式方式。后来研究才发现是有说法的,Format是按照“01/02 03:04:05PM '06 -0700” 分别按顺序表示为 月、日、时、分、秒、年、时区的。记住这个顺序后其实挺方便的。


另分享一个自己遇到的类似闭包的坑:

// 想连续每次pop出第一个
a := []int{1, 2, 3, 4, 5, 6}
length := len(a)
for i := 0; i < length; i++ {
a, b := a[1:], a[0]
fmt.Println(a, b)
}
结果
[2 3 4 5 6] 1
[2 3 4 5 6] 1
[2 3 4 5 6] 1
[2 3 4 5 6] 1
[2 3 4 5 6] 1
[2 3 4 5 6] 1

其实在循环里面 每次 a 都是外面那个 a。

对面向对象的一些不理解

package main

import (
    "fmt"
)

type Singer interface {
    Sing()
}

type Sayer interface {
    Say()
}

type SayerSayer interface {
    Singer
    Sayer
}

type Person struct {
    name string
}

type Student struct {
    Person
    age int
}

func (p *Person) Say() {
    fmt.Printf("%s can Say\n", p.name)
}

func (s *Student) Sing() {
    fmt.Printf("%s can Sing\n", s.name)
}

func main() {
    //var ss SayerSayer = Student{Person{"jay"}, 25} //报错
    var ss SayerSayer = &Student{Person{"jay"}, 25}

    ss.Sing()
    ss.Say()
}

我写了一个验证程序,对注释那行报错不太理解。
我这样写是不是表示Student实现了上面所有三个接口?

结构体

结构体那段视频。是不是go版本升级了
结构体组合,嵌入同一个结构同一级别的两个结构体,有相同的变量,在你视频版本下是报错的,在我目前运行的版本没报错
本地版本
go version go1.10.3 darwin/amd64

关于第7课时slice的问题

        s := make([]int, 3, 5)
	fmt.Printf("slice长度为 %d,容量为 %d,地址为 %p\n", len(s), cap(s), &s)
	s = append(s, 1, 2, 2, 3, 2, 3, 3, 3, 3, 3, 3)
	fmt.Printf("s变成了%v,容量为%d,地址变成了%p\n", s, cap(s), &s)

输出:
slice长度为 3,容量为 5,地址为 0xc42000a080
s变成了[0 0 0 1 2 2 3 2 3 3 3 3 3 3],容量为14,地址变成了0xc42000a080

结论:
可能是因为go语言版本更新等问题,并没有出现视频中所说的容量翻倍问题,而是直接做加法。并且内存地址也没有变化,应该是直接在原地做了容量增加的操作。希望能提醒下大家。
感谢无闻以及所做的视频,简单易懂,收获很大👍👍

English

Hey guys, awesome stuff here. Would love to see this repo translated!

初学golang关于map的一点疑问

您讲的例子中 map可以支持多维吗? 无论维度为多少他们的无序性都是一致的对吗?
还有就是关于您讲课的例子中说对一个元素类型为map的slice进行迭代 只是复制value 但是我可以用‘&’;来传递地址循环操作么 是只用一个 ‘&’ 还是要结合 星号 来传递地址呢?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.