golang的封装分享

背景:mini项目也算是沉淀了好多,有技术的也有心得

但是我还是不太想把自己一些“触及灵魂”的想法放到csdn里面分享
所以还是笔记本见吧
但是我还是愿意分享一些学到的技术和知识放在csdn里面嘿嘿

笔记本里的心得(假装我分享过了)
1.换个视角去学习———更加能利用好自己的好奇心
2.各种软能力的学习——领导,技术,学习方法
3.一个项目的设计能力
4.从环境去思考如何影响一个人的成长的

硬技术分享:

因为在项目中需要用golang 去重构python,首先就是要做到和python一样的效果,python的技术组件生态和golang的不一样,所以就很多需要自己去封装

// 判断所给路径文件/文件夹是否存在
func Exists(path string) bool {
   _, err := os.Stat(path)    //os.Stat获取文件信息
   if err != nil {
      if os.IsExist(err) {
         return true
      }
      return false
   }
   return true
}

//调用os.MkdirAll递归创建文件夹
func createFile(filePath string)  error {
   if !Exists(filePath) {
      err := os.MkdirAll(filePath, os.ModePerm)
      return err
   }
   return nil
}
func UnicodeIndex(str,substr string) int {
	result := strings.Index(str,substr)
	if result >= 0 {		
		prefix := []byte(str)[0:result]
		rs := []rune(string(prefix))
		result = len(rs)
	}
	return result
}

熟悉一下golang的并发机制

  var wg sync.WaitGroup
    defer wg.Wait()
    c := make(chan string)
    for i := 0; i < 10; i++ {
        wg.Add(1)
        go func() {
            defer wg.Done()
            c <- "hello there"
        }()
    }
    go func() {
        for msg := range c {
            fmt.Println(msg)
        }
    }()

golang实现管道输入数据

func runcmd(command string) string {
	var shell, flag string
	if runtime.GOOS == "windows" {
	   shell = "cmd"
	   flag = "/c"
	} else {
	   shell = "/bin/sh"
	   flag = "-c"
	}
 
	out, err := exec.Command(shell, flag, command).Output()
	if err != nil {
	   panic(err)
	}
  
	return string(out)
 }

体验一下go的协程

package main
import ("fmt""time")
//测试协程
//循环打印内容
func newTask() {
    i := 0
    for {
    i++
    fmt.Printf("new goroutine:i=%d\n", i)
    time.Sleep(1 * time.Second)
    }
}
//main()相当于是主协程
func main() {
//启动子协程
    go newTask()
    i := 0
    for {
    i++
    fmt.Printf("main goroutine:i=%d\n", i)
    time.Sleep(1 * time.Second)
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值