Go语言入门DEMO

目录先干为敬,主要来自菜鸟教程
在这里插入图片描述

import "fmt"

type PeopleInfo struct {
   
	name string
	age  int
}

type Father interface {
   
	Hear(word string)
	Speak() string
	ChangeName(name string)
}

//  (p PeopleInfo)称为接收器,一个函数只有一个接收器
//  推荐此类写法为struct 扩展成员方法
//  支持指针类型(适合大对象)、非指针类型(适合小对象),本例子是非指针
func (p PeopleInfo) Hear(s string)  {
   
	fmt.Println("name: ",p.name,"hear: ",s)
}
func (p PeopleInfo) Speak() string{
   
	return "I do"
}
func (p *PeopleInfo) ChangeName(name string){
   
	p.name=name
}

type Person struct {
   
	name string
	age  int
}


import (
	"fmt"
	"sync"
)

var (
	count      int
	pos        int
	countGuard sync.Mutex
)

func get(count *int) int {
   
	countGuard.Lock()
	defer countGuard.Unlock()
	return *count
}

func add(count *int) {
   
	countGuard.Lock()
	defer countGuard.Unlock()
	*count++
}

func main() {
   
	nums:=100
	var group sync.WaitGroup
	// 两种增加计数的方式均可
	group.Add(nums)
	for i := 0; i < nums; i++ {
   
		// group.Add(1)
		go func() {
   
			defer group.Done()
			for j := 0; j < 100; j++ {
   
				// 线程安全
				add(&count)
				// 线程不安全
				pos++
			}
		}()
	}
	group.Wait()

	fmt.Println(get(&count))
	fmt.Println(pos)

}

import "fmt"
import com "common"

func main(){
   
	// 实例化接口
	var father com.Father
	// PeopleInfo实现了Father接口,可以直接转成father
	father = new(com.PeopleInfo)
	fmt.Println(father)
	father.Hear("do you love me")
	fmt.Println("name: ",nil,"speak: ",father.Speak())
	father.ChangeName("huang")
	fmt.Println(father)
}


import (
	"bytes"
	"fmt"
	"reflect"
	"strconv"
)

type actor struct {
   
	age  int
	name string
}
// 反射的意义:可获得类的信息,类变量、方法等信息,并作出修改
// reflect.TypeOf():获取类型信息
// reflect.ValueOf() : 获取反射值对象(需要传入结构体或者指针)
func main() {
   
	a := actor{
   11, "huangcheng"}
	var b bytes.Buffer
	fmt.Println(reflect.TypeOf(a).Name(), reflect.TypeOf(a).Kind(), reflect.TypeOf(a).Field(1))
	fmt.Println(reflect.ValueOf(a).Kind())
	b.WriteString("{")
	writeAny(&b, reflect.ValueOf(a))
	b.WriteString("}")
	fmt.Print(b.String())

}

func writeAny(b *bytes.Buffer, value reflect.Value) {
   
	switch value.Kind() {
   
	case reflect.String:
		b.WriteString(value.String())
	case reflect.Int:
		b.WriteString(strconv.FormatInt(value.Int(), 10))
	case reflect.Struct:
		for i := 0; i < value.NumField(); i++ {
   
			b.WriteString("\"")
			b.WriteString(value.Type().Field(i).Name)
			b.WriteString("\":")
			writeAny(b, value.Field(i))
			if i < value.NumField()-1 {
   
				b.WriteString(",")
			}
		}
	}
}

import "fmt"
/**
 求素数
 */
func main(){
   
	countPrimes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值