美文网首页V语言
V语言学习笔记-12方法

V语言学习笔记-12方法

作者: lydiandy | 来源:发表于2020-05-19 16:18 被阅读0次

    方法定义

    跟go一样,在函数名前面加接收者,就是方法

    接收者默认不可变,如果要修改接收者,要加上mut

    结构体的方法,可以定义在同一个模块目录的不同源文件中

    struct User {
        name string
        age int
        
    }
    
    fn (u User) get_name() string {
        return u.name
    }
    
    fn (mut u User) set_name(name string) {
        u.name=name
    }
    

    方法链式调用

    结构体方法支持链式调用

    按照目前的测试结果,&取地址符号,在函数返回值上加就可以了,不需要在接收者上也添加

    module main
    
    struct DB {
    mut:
        sql string
    }
    
    fn new() &DB { //&表示取地址,引用
        return &DB {
            sql: ''
        }
    }
    fn (mut db DB)table(name string) &DB { //&表示取地址,引用
        db.sql+=name
        return db
    }
    fn (mut db DB)where(condition string) &DB {
        db.sql+=condition
        return db
    }
    fn (mut db DB)first() &DB {
        db.sql+='limit 1'
        return db
    }
    
    fn main() {
        db:=new()
      //链式调用
        db.table('select * from user ').where('where id=1 ').first()
        println(db.sql) //输出:select * from user where id=1 limit 1
    }
    
    

    相关文章

      网友评论

        本文标题:V语言学习笔记-12方法

        本文链接:https://www.haomeiwen.com/subject/gsvbohtx.html