settings.json中加上下面这行就可以了
"terminal.integrated.copyOnSelection": true
没有足够的数据
(゚∀゚ )
暂时没有任何数据
ikingye 赞了回答 · 1月5日
settings.json中加上下面这行就可以了
"terminal.integrated.copyOnSelection": true
settings.json中加上下面这行就可以了 {代码...}
关注 3 回答 1
ikingye 赞了回答 · 2020-07-07
结构方法等价于
func SetUsername1(u User, username string){
u.username = username ;
}
func SetUsername2(u *User,username string){
u.username = username ;
}
这样就明白了,一个是值传递,一个是指针传递
结构方法等价于 {代码...} 这样就明白了,一个是值传递,一个是指针传递
关注 10 回答 7
ikingye 赞了问题 · 2020-07-07
如下代码,不知道区别是什么!
type User struct {
username string
}
func (u User) SetUsername1(username string){
u.username = username ;
}
func (u *User) SetUsername2(username string){
u.username = username ;
}
这里 申明方法的时候使用 u User 与使用 u *User 的区别是什么?以及使用注意事项?
如下代码,不知道区别是什么! {代码...} 这里 申明方法的时候使用 u User 与使用 u *User 的区别是什么?以及使用注意事项?
关注 10 回答 7
ikingye 赞了回答 · 2020-06-29
翻墙可以从根上解决问题,并且不会再犯,降低以后的工作量和时间浪费
翻墙可以从根上解决问题,并且不会再犯,降低以后的工作量和时间浪费
关注 8 回答 4
ikingye 赞了问题 · 2020-05-30
本问题来自《Go语言圣经》中 GIF 动画 中的代码,作用是生成一个利萨如图形 GIF。
代码如下:
// Lissajous generates GIF animations of random Lissajous figures.
package main
import (
"fmt"
"image"
"image/color"
"image/gif"
"io"
"math"
"math/rand"
"os"
"reflect"
)
var palette = []color.Color{color.White, color.RGBA{0x6C, 0x9F, 0xB4, 0xff}}
const (
whiteIndex = 0 // first color in palette
greenIndex = 1 // second color in palette
)
func main() {
lissajous(os.Stdout)
}
func lissajous(out io.Writer) {
const (
cycles = 5 // number of complete x oscillator revolutions
res = 0.001 // angular resolution
size = 100 // image canvas covers [-size..+size]
nframes = 64 // number of animation frames
delay = 8 // delay between frames in 10ms units
)
freq := rand.Float64() * 3.0 // relative frequency of y oscillator
anim := gif.GIF{LoopCount: nframes}
phase := 0.0 // phase difference
for i := 0; i < nframes; i++ {
rect := image.Rect(0, 0, 2*size+1, 2*size+1)
img := image.NewPaletted(rect, palette)
for t := 0.0; t < cycles*2*math.Pi; t += res {
x := math.Sin(t)
y := math.Sin(t*freq + phase)
img.SetColorIndex(size+int(x*size+0.5), size+int(y*size+0.5), greenIndex)
}
phase += 0.1
anim.Delay = append(anim.Delay, delay)
anim.Image = append(anim.Image, img)
}
// gif.EncodeAll(out, &anim) // NOTE: ignoring encoding errors
fmt.Println(reflect.TypeOf(cycles))
}
不输出 gif,执行代码查看 cycles 的类型为 int.
% go run lissajous.go
int
将 cycles 的声明语句改为 var cycles = 5
后出错,这里 cycles 也是 int 型。
% go run lissajous.go
# command-line-arguments
./lissajous.go:44: constant 3.14159 truncated to integer
./lissajous.go:44: invalid operation: t < cycles * 2 * math.Pi (mismatched types float64 and int)
尝试改成 var cycles = 5.0
后,cycles 的类型为 float64,代码能正常运行。
为什么用 const
声明的 int
与 var
声明的 int
会有差别?
本问题来自《Go语言圣经》中 GIF 动画 中的代码,作用是生成一个利萨如图形 GIF。 代码如下: {代码...} 不输出 gif,执行代码查看 cycles 的类型为 int. {代码...} 将 cycles 的声明语句改为 var cycles = 5 后出错,这里 cycles 也是 int 型。 {代码...} 尝试改成 ...
关注 3 回答 3
ikingye 赞了问题 · 2020-05-25
git clone 的参数depth=1
有什么用?
git clone --depth=1 git://someserver/somerepo
git clone 的参数depth=1有什么用? {代码...}
关注 2 回答 1
ikingye 赞了回答 · 2020-05-17
我大概明白题主是什么问题,我遇到过类似的问题,题主应该是需要这个函数:
func ToSlice(arr interface{}) []interface{} {
v := reflect.ValueOf(arr)
if v.Kind() != reflect.Slice {
panic("toslice arr not slice")
}
l := v.Len()
ret := make([]interface{}, l)
for i := 0; i < l; i++ {
ret[i] = v.Index(i).Interface()
}
return ret
}
我是实际写代码时候遇到类似的就是[]int,[]float,[]string等作为输入,输出是将其元素都tostr然后join一下。每个元素tostr可以单独写一个泛型的实现,入参是float还是int等都是可以的:
func ToStr(i interface{}) string {
return fmt.Sprintf("%v", i)
}
ToStr(1)
ToStr(float64(1))
而如果更进一步封装接口Join时候
func Join(i []interface{}) string {
}
Join([]int{1,2}) // 报错:类型不匹配
解决方法就是上面的ToSlice函数
Join(ToSlice([]int{1,2}))
我是实际写代码时候遇到类似的就是[]int,[]float,[]string等作为输入,输出是将其元素都tostr然后join一下。每个元素tostr可以单独写一个泛型的实现,入参是float还是int等都是可以的:
关注 4 回答 4
ikingye 赞了回答 · 2020-05-14
2006是go语言在google内部谋划的日子,后面依次是1、2、15
(3)、4、5的顺序表示,你可以这么记。哈哈
2006是go语言在google内部谋划的日子,后面依次是1、2、15(3)、4、5的顺序表示,你可以这么记。哈哈
关注 5 回答 4
ikingye 赞了回答 · 2020-04-16
在Model中,where
方法是不存在的,而getTable
方法却是存在的。之所以这么说,是php因为兼容性的考虑,在检查方法是否存在的时候,并不会去检查是不是静态方法,只要方法存在,不管是静态还是非静态,都认为是方法存在的,因此就不会调用__callStatic
方法了。
这也就造成了调用Model::where
的时候,由于where
方法是在Illuminate\Database\Eloquent\Builder
中定义的,__call
将该方法的调用代理到了Builder
上,因此可以调用。而getTable
方法,则因为是Model
中的实例方法,做方法存在性判断的时候发现方法有了,就不会去调用__callStatic
,直接对该方法进行静态调用,所有就抛出了
Non-static method IlluminateDatabaseEloquentModel::getTable() should not be called statically, assuming $this from incompatible context
在Model中,where方法是不存在的,而getTable方法却是存在的。之所以这么说,是php因为兼容性的考虑,在检查方法是否存在的时候,并不会去检查是不是静态方法,只要方法存在,不管是静态还是非静态,都认为是方法存在的,因此就不会调用__callStatic方法了。
关注 7 回答 4
ikingye 赞了回答 · 2020-04-09
用过PHP/Ruby(Rails)/Java(Spring Boot), 从传统单体网站到前后端分离的API, 不知不觉已经忘记了 session 是什么了~
PHP 的 $_SESSION
可以在单机应用中方便的使用 session. 请求携带 cookies 信息来请求PHP Server, PHP 默认去基于文件的会话管理器中找会话ID, 找不到就认为这是一个新会话. 如果已经存在会话了,session_start()
就把文件中的内容反序列化到 $_SESSION
中, 以供读取; set session 就是把对象序列化到那个指定文件中.
Rails 默认的 Session 是基于 cookies 的, 这有效的反驳了 "session是存在服务器的" 说法, 你可以说 "session 是给服务器用的", session存在哪都可以. 当然, Rails 的 session 并不会明文的保存, 保存的是经过服务端加密之后的密文.
当前后端分离之后, session 的概念就越来越淡了. 我们使用 token 或者 jwt 来验证用户身份, 通过之后再进行下一步的业务逻辑. 取用户信息可能会使用进程内的缓存, 也可能使用分布式缓存, 已经把具体的 session 概念分解了.
用过PHP/Ruby(Rails)/Java(Spring Boot), 从传统单体网站到前后端分离的API, 不知不觉已经忘记了 session 是什么了~
关注 15 回答 11
查看全部 个人动态 →
(゚∀゚ )
暂时没有
(゚∀゚ )
暂时没有
注册于 2017-09-11
个人主页被 688 人浏览
推荐关注