工程建设最好的网站,重庆个人网站建设,如何做一个单页面的网站,wordpress网站好优化吗今日份知识#xff1a;
curl -x 指定方法名 请求的url -d 请求体body里面的内容 //curl命令
curl -x Get 127.0.0.1:8080/add/user -d jinlicurl如果不指定方法#xff0c;默认使用get方法#xff0c;在go里面#xff0c;get方法到底可以不可以把内容数据写在body里面传…今日份知识
curl -x 指定方法名 请求的url -d 请求体body里面的内容 //curl命令
curl -x Get 127.0.0.1:8080/add/user -d jinlicurl如果不指定方法默认使用get方法在go里面get方法到底可以不可以把内容数据写在body里面传递呢
其实是可以的通常如果我们使用get方法都是把参数写在url里面是否支持这个需要看具体的浏览器是否支持例如google好像就不支持但是自己写个webui然后使用curl -x Get去获取body的话是可以获取到的
但是RFC7231不鼓励这样的方式所以这样的方式还是有可能读不到的
get方法是幂等性的post不是幂等的
今日份力扣14 最长前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀返回空字符串 “”。 示例 1 输入strs [“flower”,“flow”,“flight”] 输出“fl” 示例 2 输入strs [“dog”,“racecar”,“car”] 输出“” 解释输入不存在公共前缀。 提示 1 strs.length 200 0 strs[i].length 200 strs[i] 仅由小写英文字母组成 今日份思考使用go实现
字符串和数组其实很像字符串在go里面一旦定义就无法更改所以我们想改变字符串就要拼接替换等操作那么也就会出现很多已经写好的api比如go可以使用号连接可以使用fmt.Sprintf,可以使用strings里面的aip可以使用buffer.strings等函数
func commentPerf(str []string) string {if str nil || len(str) 0 {return }temp : for i : 0; i len(str[0]); i {for j : 1; j len(str); j {if i len(str[j]) || str[j][i] ! str[0][i] {return temp}}temp temp string(str[0][i])}return temp
}
下面是go实现具体demo
:会对字符串进行遍历计算并开辟一个新的空间来存储原来的两个字符串。go
func main() {a : nihaob : hellofmt.Println(a b)
}Sprintf:必须要用反射获取值因此有性能损耗
func main() {a : nihaob : helloc : fmt.Sprintf(%s,%s, a, b)fmt.Println(c)
}strings.Builder:里面维护了一个可变的字节缓冲区不用创建新的字符串变量可以直接往缓冲区增加字符串、字符或字节片段它是直接把[]byte转换为string从而避免变量拷贝
type Builder struct {addr *Builderbuf []byte
}func main() {a : nihaob : hellovar bulid strings.Builderbulid.WriteString(a)bulid.WriteString( )bulid.WriteString(b)c : bulid.String()fmt.Println(c)
}bytes.Buffer:字节缓冲器里面存放都是byte使用 bytes.Buffer 时可以避免频繁地创建新的字符串变量从而减少内存分配也避免变量拷贝
type Buffer struct {buf []byteoff intlastRead readOp
}func main() {a : nihaob : hellovar bytes bytes.Bufferbytes.WriteString(a)bytes.WriteString( )bytes.WriteString(b)c : bytes.String()fmt.Println(c)
}strings.Join:自定义分隔符适用对象[]string类型因为我们传入切片长度固定所以提前进行容量分配可以减少内存分配
func main() {a : []string{nihao, hello}c : strings.Join(a, )fmt.Println(c)
}