Mac上go代码添加注释信息

1.在Mac上给golang代码添加注释信息

给go项目中的所有函数和结构体代码定义的上一行添加注释信息,默认添加的注释信息为函数名称或者结构体名称

mac 中的sed和Linux中的sed使用方式略有区别,可下载 gsed,gsed和Linux中的sed使用方式一致

brew install gsed

2.示例

drwxr-xr-x 2 root root 4096 Sep 17 19:02 zwibserve

[root@virgosnail zwibserve-master]# ./addComment.sh zwibserve/

[root@virgosnail zwibserve-master]# vim zwibserve/encoder.go:q

// initMessage initMessage

type initMessage struct {

MessageType uint8

More uint8

ProtocolVersion uint16

MaxMessageSize uint32

CreationMode uint8

Offset uint64

DocIDLength uint8

DocID string

Data []byte

}

3. 源代码

#!/bin/sh

main(){
  file=$1

  if [[ $file == "" ]]
  then
     echo "please input filename"
     exit 1
  fi
  # 是文件夹则进入文件夹
  if [ -d $file ]
  then
    # 进入目录,否则需要拼接文件地址
    cd  $file
    # 遍历当前目录下所有文件
    for i in `ls ./`
    do
      if [ -r $i ]
      then
        echo "file $i"
        single_type $i
      fi
    done
  else
    single_type $file
  fi
}

# 给go中的结构体添加注释
single_type(){

  file=$1

  types=`grep -n  struct $file | grep type`

  old_ifs=$IFS
  IFS=$'\n'

  num=1
  for i in $types
  do
    line_num=`echo $i | awk -F ':' '{print $1}'`
    echo " line_num  $line_num"
    type_name=`echo $i | awk '{print $2}'`
    echo " type_name $type_name"
    insert_line=`expr $line_num + $num`
    insert_line=`expr $insert_line - 1`
    echo " insert_line  $insert_line"
    comment="\/\/ $type_name $type_name"
    echo $comment

    gsed -i "${insert_line}i${comment}" $file
    num=`expr $num + 1`
  done

  IFS=$old_ifs
}

# 给go中的函数添加注释
single_func(){

  file=$1

  types=`grep -n  func $file`

  old_ifs=$IFS
  IFS=$'\n'

  num=1
  for i in $types
  do
    if [[ $i == "./:" ]]
    then
      continue
    fi
    echo "content $i"

    line_num=`echo $i | awk -F ':' '{print $1}'`
    echo " line_num  $line_num"

    func_name=`echo $i | awk '{print $2}' | awk -F '(' '{print $1}'`
    echo " func_name $func_name"

    insert_line=`expr $line_num + $num`
    insert_line=`expr $insert_line - 1`
    echo " insert_line  $insert_line"

    comment="\/\/ $func_name $func_name"
    echo $comment

    gsed -i "${insert_line}i${comment}" $file
    num=`expr $num + 1`
  done

  IFS=$old_ifs
}

main $1